
t = db.group5;
t.drop();

// each group has groupnum+1 5 users
for (var group = 0; group < 10; group++) {
    for (var i = 0; i < 5 + group; i++) {
        t.save({group: "group" + group, user: i});
    }
}

function c(group) {
    return t.group({
        key: {group: 1},
        q: {group: "group" + group},
        initial: {users: {}},
        reduce: function(obj, prev) {
            prev.users[obj.user] = true;  // add this user to the hash
        },
        finalize: function(x) {
            var count = 0;
            for (var key in x.users) {
                count++;
            }

            // replace user obj with count
            // count add new field and keep users
            x.users = count;
            return x;
        }
    })[0];  // returns array
}

assert.eq("group0", c(0).group, "g0");
assert.eq(5, c(0).users, "g0 a");
assert.eq("group5", c(5).group, "g5");
assert.eq(10, c(5).users, "g5 a");
